<?php
/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright 2011
 * @license    All rights reserved
 */


class localiteSrv {

    /**
     * Fonction permettant d'avoir la liste des départements, des villes et region
     *
    **/
    public static function getDepartement ($type) {

       // localite
        $sql = "SELECT departement_nom,departement_num,departement_id FROM ao_departement";
        $sql.= " INNER JOIN ao_entreprise ON ao_entreprise.entreprise_departement = ao_departement.departement_id";
        $sql.= " AND  ao_entreprise.entreprise_type_id =".$type;
        $sql.= " GROUP BY departement_nom ORDER BY departement_nom ASC";
        $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return $tResult;

     }

      public static function getRegion($type) {

       // localite
        $sql = "SELECT region,departement_num,departement_id FROM ao_departement";
        $sql.= " INNER JOIN ao_entreprise ON ao_entreprise.entreprise_departement = ao_departement.departement_id";
        $sql.= " AND  ao_entreprise.entreprise_type_id =".$type;
        $sql.= " GROUP BY region ORDER BY region ASC";
        $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return $tResult;
      }

      public static function getVille($type) {

       // localite
        $sql = "SELECT DISTINCT Concat(UPPER(LEFT(entreprise_ville,1)),LOWER(SUBSTRING(entreprise_ville,2))) as ville, entreprise_departement, entreprise_ville,";
        $sql.= " ao_departement.departement_num, grande_ville , ville_secondaire FROM ao_entreprise";        
        $sql.= " INNER JOIN ao_departement ON ao_entreprise.entreprise_departement = ao_departement.departement_id";
        $sql.= " WHERE entreprise_type_id =".$type;
        $sql.= " GROUP BY ville ORDER BY ville ASC";
        $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return self::removeDoubonVille($tResult);

    }
    
    /**
     * Comme on a combiné les 
     * grandes villes et préfectures, on essaie de supprimer les doublons
     *
     * @param array $ville
     */
    public static function removeDoubonVille($ville) {
        $ret = $temp = array();
        if (sizeof($ville)) { // boucler juste sur la ville
            foreach ($ville as $k=>$item) {
                if (!in_array(strtolower($item->ville), $temp)) {
                    $temp[] = strtolower($item->ville);
                    $ret[]  = $item;
                } else {
                    // si doublon
                    unset($ville[$k]);
                }
            }
            if (sizeof($temp)) {
                foreach ($ville as $k=>$item) { // boucler sur la grande ville
                    if (!in_array(strtolower($item->grande_ville), $temp)) {
                        $temp[]      = strtolower($item->grande_ville);
                        $item->ville = $item->grande_ville;
                        $ret[]       = $item;
                    }
                }
                // boucler sur les villes secondaires
                // comme ces dernières sont séparées par des ',' il faut traiter côté php ce cas
                foreach ($ville as $k=>$item) { // boucler sur les villes secondaires
                    if ($item->ville_secondaire) {
                        if (strpos($item->ville_secondaire, ",") !== false) {
                            //transformation en tableau puis check
                            $tvillesecondaire = explode(",", $item->ville_secondaire);
                            if (sizeof($tvillesecondaire)) {
                                foreach ($tvillesecondaire as $secondaire) {
                                    if (!in_array(trim(strtolower($secondaire)), $temp)) {
                                        $temp[]      = trim(strtolower($secondaire));
                                        $item->ville = trim($secondaire);
                                        $ret[]       = $item;
                                    }
                                }
                            }

                        } elseif (!in_array(trim(strtolower($item->ville_secondaire)), $temp)) {
                            $temp[]      = trim(strtolower($item->ville_secondaire));
                            $item->ville = $item->ville_secondaire;
                            $ret[]       = $item;
                        }
                    }
                }
            }
        }

        return $ret;
    }

   /**
     * Fonction permettant d'avoir la liste de région
     */
    public static function listeRegion() {

        // localite
        $sql = "SELECT DISTINCT region FROM ao_departement ORDER BY region ";
         $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return $tResult;

    }

     /**
     * Fonction permettant d'avoir la liste de département
     */
    public static function listeDepartement() {

        // localite
        $sql = "SELECT DISTINCT departement_nom,departement_num FROM ao_departement ORDER BY departement_nom ";
         $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return $tResult;

    }

    /**
     * Fonction permettant d'avoir liste des villes de la table département + villes des différentes annonces 
     */
    public static function listeVille() {

       // localite
        $sql     = " SELECT DISTINCT grande_ville AS ville, ville_secondaire FROM ao_departement ORDER BY ville";
        $jdb     = jDb::getDbWidget();
        $tResult =  $jdb->fetchAll($sql);

        return $tResult;

    }

    /**
     * Fonction permettant de combiner les villes aux villes secondaires
     */
    public static function listeVilleBis($ville) {
        $ret = $temp = array();
        if (sizeof($ville)) { // boucler juste sur la ville
                foreach ($ville as $k=>$item) {
                    if (!in_array(strtolower($item->ville), $temp)) {
                        $temp[] = strtolower($item->ville);
                        $ret[]  = $item;
                    } else {
                        // si doublon
                        unset($ville[$k]);
                    }
                }
                foreach ($ville as $k=>$item) { // boucler sur les villes secondaires
                    if ($item->ville_secondaire) {
                        if (strpos($item->ville_secondaire, ",") !== false) {
                            //transformation en tableau puis check
                            $tvillesecondaire = explode(",", $item->ville_secondaire);
                            if (sizeof($tvillesecondaire)) {
                                foreach ($tvillesecondaire as $secondaire) {
                                    if (!in_array(trim(strtolower($secondaire)), $temp)) {
                                        $temp[]      = trim(strtolower($secondaire));
                                        $item->ville = trim($secondaire);
                                        $ret[]       = $item;
                                    }
                                }
                            }
                        } elseif (!in_array(trim(strtolower($item->ville_secondaire)), $temp)) {
                            $temp[]      = trim(strtolower($item->ville_secondaire));
                            $item->ville = $item->ville_secondaire;
                            $ret[]       = $item;
                        }
                    }
                }
        }
        return $temp;
    }

}
